[Week 1] Command Line 入門 & 基本指令


Posted by Heidi-Liu on 2020-06-14

本篇為 [CMD101] Command Line 超新手入門[CS101] 初心者的計概與 coding 火球術 這兩門課程的學習筆記。如有錯誤歡迎指正!

關於寫程式這件事

就是對電腦下指令(程式碼),讓電腦執行我們想要的動作(解決問題)。

條列式的重要性

試著用「程式化思考」將解法以標準化的格式呈現。

範例:「給你一串文字,問你裡面有沒有 p」

1. 假設 n 是 1,length 是字串長度,
   A 設成 -1 代表找到的位置,p 是要找到的字   //字串不會有負數,若小於零代表找不到

2. 看第 n 個字是不是 p,是的話 A=n  //把 A 設成 n 的值,若 n=3,即在第 3 個數找到 p

3. 把 n+1,如果 n+1 大於 length 的話,就跳到第 5 步  //條件機制

4. 跳回第 2 步  //迴圈的概念

5. 如果 A < 0,代表沒出現過;否則 A 就是答案

Command Line 是什麼?

  • 操控電腦的方法大致上分兩種類型:
  1. GUI(Graphical User Interface,圖形化介面):一般習慣使用的電腦操作介面,透過設計出的「圖形」來下指令。
  2. CLI(Command Line Interface,命令列介面):透過「純文字」來達成指定動作。
  • 兩種都可以用來和電腦溝通;但有些伺服器可能沒有 GUI (例如 database),這種情況就只能使用 CLI 來進行操作。

環境設置

  • 要執行 Command Line 指令,必須先根據作業系統安裝 Command Line Tool:
  1. Windows:git-bash(推薦)、Cmder
  2. Mac:iTerm2

基本指令介紹

所謂的「指令」其實也是由程式寫成,我們藉由輸入指令來執行程式。

pwd(Print Working Directory):印出目前所在位置

ls(List):印出當前位置檔案清單

  • ls-l:長格式(long),顯示有關檔案的詳細資訊
  • ls-a:列出所有檔案(包括隱藏檔)

cd(Change Directory) 切換目前資料夾

  • cd ..:回到上一層資料夾
  • cd ~:回到 home 目錄(我的文件)
  • cd /:回到根目錄
    • 絕對路徑:「一定由根目錄 / 寫起」
      cd /Users/share/data
    • 相對路徑:「不是由 / 寫起」
      cd test
  • 範例:「若要從 /downloads/test/data 到 /downloads/test/media 底下時」
    可以寫 cd ../media:先回到上一層,再進入 media 資料夾
    也可寫 cd ~/downloads/test/media:直接用絕對路徑進入

cd 語法練習

小技巧:直接把圖形介面的資料夾拖到 CLI 裡,就會自動輸入那個資料夾的絕對路徑。可節省打字時間。

clear:清空螢幕

touch:碰一下

  • 作用 1:touch 現有的檔案,會修改檔案時間成當前時間
  • 作用 2:若檔案不存在,則會新增檔案

mkdir:MaKe DIRectory 新增資料夾

rm:ReMove 刪除檔案(註:有關刪除指令需慎用)

rmdir:刪除資料夾

  • 也可用 rm -r 指令來刪除檔案或資料夾

cp:CoPy 複製

  • 範例 1. cp data data_2:複製出一個 data_2 檔案
  • 範例 2. cp -r deep deep2:複製出一個 deep2 資料夾

mv:MoVe 移動檔案 or 更改檔名

  • 作用 1:當找到該資料夾時,檔案會移到資料夾裡
    • 範例:mv data folder:將 data 檔案移到 folder 資料夾裡
  • 作用 2:當找不到該資料夾,則會更改檔案名稱
    • 範例:mv data test:將 data 檔案名稱更改為 test

vim:進入文字編輯器

本來想說沒問題,結果還真的卡很久無法回到上層介面 Orz
需按下 [ESC] 按鍵回到一般指令模式,才能下 :wq 指令存檔(write)並離開 (quit)。

參考 vim 介紹:

vi 與 vim 的指令整理
鳥哥的Linux 私房菜-- 第九章、vim 程式編輯器
超簡明 Vim 操作介紹


更多常用指令

date:印出當前日期

top(Table Of Processes):印出所有Process,可持續偵測程序運作的狀態(按 q 鍵離開)

cat(CATenate):查看檔案內容

less:分頁式印出檔案

grep:抓取特定關鍵字

echo:印出字串

|(pipe):把前面的輸入「變成」後面的輸出

  • 範例:cat file.txt | grep hi:從印出的 file.txt 內容中,抓取字串 hi 並輸出

>(redirect):將輸入或輸出重新導向

  • 範例 1:date > time.txt:將 date 輸出到 time.txt
      再輸入 cat time.txt,會顯示出 Sun May 31 20:29:57 UTC 2020

  • 範例 2:echo "123" > 123.txt:印出 123 到 123.txt
     1. 若輸入 echo "456" > 123.txt:顯示 456,檔案會被全部覆蓋
     2. 若輸入 echo "456" >> 123.txt:顯示 123456,兩個 > 會新增內容在最後

wget:下載檔案

  • 範例:輸入 wget https://www.google.com.tw/,即可下載 Google 首頁的網頁原始碼(index.html)

curl:送出 request,可用來測試 API


補充:檔案格式

  • 內容是一回事,如何解讀是另一回事
  • 在電腦裡的任何檔案,其實都是以純文字組成,可用不同格式進行解析
  • 可以透過設定副檔名(如:文件.pdf、圖片.jpg)幫助電腦辨別格式

參考資料:

  1. [第一週] Command Line - Terminal、基本指令介紹
  2. Linux Command 命令列指令與基本操作入門教學
  3. 介紹好用工具:Cmder ( 具有 Linux 溫度的 Windows 命令提示字元工具 )
  4. [心得] iTerm2 + zsh,打造更好的工作環境

#command line







Related Posts

Avoid blocking by navigation menu on mobile device

Avoid blocking by navigation menu on mobile device

3. Abstract Factory

3. Abstract Factory

Day 139

Day 139


Comments